#ifndef DSPSIMULATOR_SNAPSHOT_H
#define DSPSIMULATOR_SNAPSHOT_H

#include <memory>
#include <simulator/type/type.h>

class MMU;

class RegisterMap;

class TargetMachine;

class Snapshot {
private:
    std::shared_ptr<MMU> m_mmu;
    std::shared_ptr<RegisterMap> m_registerMap;
    u64 m_numOfInstruction;

public:
    Snapshot(TargetMachine *targetMachine, u64 numOfInstruction);

    ~Snapshot() = default;

    std::shared_ptr<MMU> getMMU();

    std::shared_ptr<RegisterMap> getRegisterMap();

    u64 getNumOfInstruction();
};

#endif //DSPSIMULATOR_SNAPSHOT_H
